/**
 * 掘金微热榜API处理模块
 * 负责获取掘金热榜数据并进行处理
 */

// Gitee仓库JSON文件基础URL
const GITEE_BASE_URL = 'https://gitee.com/coder-pig/juejin_file_save/raw/master/hot_articles/';

// 本地代理服务器URL
const LOCAL_PROXY_URL = '/api/gitee/';

/**
 * 获取掘金热榜数据
 * @param {string} categoryId - 分类ID
 * @returns {Promise<Array>} - 返回处理后的文章数据
 */
async function fetchJuejinHotArticles(categoryId) {
    try {
        // 尝试不同的数据源
        const dataSources = [
            // 首先尝试使用本地代理
            `${LOCAL_PROXY_URL}${categoryId}`,
            // 然后尝试直接从Gitee获取JSON数据
            `${GITEE_BASE_URL}${categoryId}.json`
        ];
        
        let lastError = null;
        
        // 依次尝试不同的数据源
        for (const dataSource of dataSources) {
            try {
                console.log(`尝试从 ${dataSource} 获取数据...`);
                
                // 发送请求获取数据
                const response = await fetch(dataSource, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json',
                // 添加额外的请求头以绕过一些限制
                'X-Requested-With': 'XMLHttpRequest'
            },
                    // 设置较短的超时时间
                    signal: AbortSignal.timeout(5000)
                });
                
                // 检查响应状态
                if (!response.ok) {
                    throw new Error(`请求失败: ${response.status} ${response.statusText}`);
                }
                
                // 解析响应数据
                const articles = await response.json();
                
                // 检查数据格式
                if (!articles || !Array.isArray(articles)) {
                    throw new Error('返回数据格式不正确');
                }
                
                console.log(`成功从 ${dataSource} 获取到 ${articles.length} 条文章数据`);
                
                // 直接返回数据，因为JSON已经是处理好的格式
                return articles;
            } catch (error) {
                console.error(`尝试使用 ${dataSource} 获取数据失败:`, error);
                lastError = error;
                // 继续尝试下一个数据源
                continue;
            }
        }
        
        // 所有数据源都失败了，抛出最后一个错误
        console.error('所有数据源都请求失败，使用示例数据');
        throw lastError || new Error('无法获取掘金热榜数据');
    } catch (error) {
        console.error('获取掘金热榜数据失败:', error);
        // 出错时返回示例数据
        return getExampleData();
    }
}

/**
 * 处理文章数据，提取所需字段
 * @param {Array} articles - 原始文章数据
 * @returns {Array} - 处理后的文章数据
 */
function processArticleData(articles) {
    // 如果没有数据，返回空数组
    if (!articles || articles.length === 0) {
        return [];
    }
    
    // 处理每篇文章数据
    return articles.map((article, index) => {
        // 提取所需字段
        return {
            content_id: article.content?.content_id || '',
            title: article.content?.title || '无标题',
            // 生成AI标题和描述（实际项目中这部分可能来自后端）
            ai_title: article.content?.title || '无标题',
            ai_desc: article.content?.brief || '暂无描述',
            content_url: `https://juejin.cn/post/${article.content?.content_id}`,
            author_name: article.author?.name || '匿名',
            author_id: article.author?.user_id || '',
            // 统计数据
            view: article.content_counter?.view || 0,
            like: article.content_counter?.like || 0,
            collect: article.content_counter?.collect || 0,
            comment_count: article.content_counter?.comment_count || 0,
            // 排序
            order: index + 1
        };
    });
}

/**
 * 获取本地示例数据（当API请求失败时使用）
 * @returns {Array} - 示例数据
 */
function getExampleData() {
    return [
        {
            "ai_desc": "2025年5月30日，由rolldown驱动的vite，rolldown-vite正式内测。作者用前端项目实测，替换后编译打包4231个文件，操作10次，打包性能提升约2倍，暂未发现问题，可供尝鲜。",
            "ai_title": "实测：下一代Vite速度快一倍",
            "author_id": "1028798615918983",
            "author_name": "粥里有勺糖",
            "collect": 0,
            "comment_count": 0,
            "content_id": "7510477725476339766",
            "content_url": "https://juejin.cn/post/7510477725476339766",
            "like": 1,
            "order": 9,
            "title": "视野修炼-技术周刊第121期 | Rolldown-Vite",
            "view": 79
        },
        {
            "ai_desc": "2025年5月30日，由rolldown驱动的vite（rolldown-vite）正式内测。作者用前端项目实测，替换后编译打包4231个文件，操作10次，打包性能提升约2倍，暂未发现问题。",
            "ai_title": "实测：下一代Vite速度快一倍",
            "author_id": "2865758605422890",
            "author_name": "无限大6",
            "collect": 1,
            "comment_count": 1,
            "content_id": "7510136999422574644",
            "content_url": "https://juejin.cn/post/7510136999422574644",
            "like": 0,
            "order": 10,
            "title": "《计算机十万个为什么》之前端与后端",
            "view": 74
        }
    ];
}

// 导出函数
export { fetchJuejinHotArticles, getExampleData };